<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>RaftLib: MapBase Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">RaftLib
   &#160;<span id="projectnumber">0.3a</span>
   </div>
   <div id="projectbrief">C++ Stream Processing Template Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="class_map_base-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MapBase Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for MapBase:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="class_map_base__inherit__graph.svg" width="151" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for MapBase:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="class_map_base__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5a923d5b3ececb0407aa934d967ab7b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a5a923d5b3ececb0407aa934d967ab7b1">MapBase</a> ()</td></tr>
<tr class="separator:a5a923d5b3ececb0407aa934d967ab7b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c62d788746d2161264b84ba66efcfbe"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a6c62d788746d2161264b84ba66efcfbe">~MapBase</a> ()</td></tr>
<tr class="separator:a6c62d788746d2161264b84ba66efcfbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad98ef02c1651130ad6b565ad156b97c1"><td class="memTemplParams" colspan="2">template&lt;order::spec t = order::in&gt; </td></tr>
<tr class="memitem:ad98ef02c1651130ad6b565ad156b97c1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_map_base.html#ad98ef02c1651130ad6b565ad156b97c1">link</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, const std::size_t buffer=0)</td></tr>
<tr class="separator:ad98ef02c1651130ad6b565ad156b97c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad982ebf61439a069ed36dc5f756b732a"><td class="memTemplParams" colspan="2">template&lt;order::spec t = order::in&gt; </td></tr>
<tr class="memitem:ad982ebf61439a069ed36dc5f756b732a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_map_base.html#ad982ebf61439a069ed36dc5f756b732a">link</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, const std::string a_port, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, const std::size_t buffer=0)</td></tr>
<tr class="separator:ad982ebf61439a069ed36dc5f756b732a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19a0a2f6842a863327920776457c52bf"><td class="memTemplParams" colspan="2">template&lt;order::spec t = order::in&gt; </td></tr>
<tr class="memitem:a19a0a2f6842a863327920776457c52bf"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_map_base.html#a19a0a2f6842a863327920776457c52bf">link</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, const std::string b_port, const std::size_t buffer=0)</td></tr>
<tr class="separator:a19a0a2f6842a863327920776457c52bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af06481b99a96e3c5ae8da88cc8a78e91"><td class="memTemplParams" colspan="2">template&lt;order::spec t = order::in&gt; </td></tr>
<tr class="memitem:af06481b99a96e3c5ae8da88cc8a78e91"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_map_base.html#af06481b99a96e3c5ae8da88cc8a78e91">link</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, const std::string a_port, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, const std::string b_port, const std::size_t buffer=0)</td></tr>
<tr class="separator:af06481b99a96e3c5ae8da88cc8a78e91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a2624d7b81f0078dcc78e524045403e28"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a2624d7b81f0078dcc78e524045403e28">join</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> &amp;a, const std::string name_a, <a class="el" href="struct_port_info.html">PortInfo</a> &amp;a_info, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> &amp;b, const std::string name_b, <a class="el" href="struct_port_info.html">PortInfo</a> &amp;b_info)</td></tr>
<tr class="separator:a2624d7b81f0078dcc78e524045403e28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c6452a79012d0a98eb6c406e008d87e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c6452a79012d0a98eb6c406e008d87e"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>insert</b> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, <a class="el" href="struct_port_info.html">PortInfo</a> &amp;a_out, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, <a class="el" href="struct_port_info.html">PortInfo</a> &amp;b_in, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *i)</td></tr>
<tr class="separator:a4c6452a79012d0a98eb6c406e008d87e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a2541cb37a237e66fc88129f9f0b02f50"><td class="memItemLeft" align="right" valign="top">kernelkeeper&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a2541cb37a237e66fc88129f9f0b02f50">source_kernels</a></td></tr>
<tr class="separator:a2541cb37a237e66fc88129f9f0b02f50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83bb7ac6b0e80882356946d19da7ce4a"><td class="memItemLeft" align="right" valign="top">kernelkeeper&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a83bb7ac6b0e80882356946d19da7ce4a">dst_kernels</a></td></tr>
<tr class="separator:a83bb7ac6b0e80882356946d19da7ce4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2220cd630c5d00708f08d9bc70a48220"><td class="memItemLeft" align="right" valign="top">kernelkeeper&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#a2220cd630c5d00708f08d9bc70a48220">all_kernels</a></td></tr>
<tr class="separator:a2220cd630c5d00708f08d9bc70a48220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc4856ed552e77510211851f0a4a02ab"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_map_base.html">MapBase</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_map_base.html#abc4856ed552e77510211851f0a4a02ab">sub_maps</a></td></tr>
<tr class="separator:abc4856ed552e77510211851f0a4a02ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ad2f32e921244459f7cc6d50355429cc6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2f32e921244459f7cc6d50355429cc6"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>Map</b></td></tr>
<tr class="separator:ad2f32e921244459f7cc6d50355429cc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5a923d5b3ececb0407aa934d967ab7b1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">MapBase::MapBase </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="class_map_base.html">MapBase</a> - constructor, really doesn't do too much at the monent and doesn't really need to.</p>
<p>mapbase.cpp - </p><dl class="section author"><dt>Author</dt><dd>: Jonathan Beard </dd></dl>
<dl class="section version"><dt>Version</dt><dd>: Fri Sep 12 10:28:33 2014</dd></dl>
<p>Copyright 2014 Jonathan Beard</p>
<p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:</p>
<p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. </p>

</div>
</div>
<a class="anchor" id="a6c62d788746d2161264b84ba66efcfbe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MapBase::~MapBase </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>default destructor </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a2624d7b81f0078dcc78e524045403e28"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MapBase::join </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>name_a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_port_info.html">PortInfo</a> &amp;&#160;</td>
          <td class="paramname"><em>a_info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>name_b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_port_info.html">PortInfo</a> &amp;&#160;</td>
          <td class="paramname"><em>b_info</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>join - helper method joins the two ports given the correct information. Essentially the correct information for the <a class="el" href="struct_port_info.html">PortInfo</a> object is set. Type is also checked using the typeid information. If the types aren't the same then an exception is thrown. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>&amp; </td></tr>
    <tr><td class="paramname">name_a</td><td>- name for the port on kernel a </td></tr>
    <tr><td class="paramname">a_info</td><td>- <a class="el" href="struct_port_info.html">PortInfo</a> struct for kernel a </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>&amp; </td></tr>
    <tr><td class="paramname">name_b</td><td>- name for port on kernel b </td></tr>
    <tr><td class="paramname">b_info</td><td>- <a class="el" href="struct_port_info.html">PortInfo</a> struct for kernel b </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="class_port_type_mismatch_exception.html">PortTypeMismatchException</a></td><td></td></tr>
  </table>
  </dd>
</dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 0 -->
</div>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="class_map_base_a2624d7b81f0078dcc78e524045403e28_icgraph.svg" width="272" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad98ef02c1651130ad6b565ad156b97c1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;order::spec t = order::in&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> MapBase::link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::size_t&#160;</td>
          <td class="paramname"><em>buffer</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>link - this comment goes for the next 4 types of link functions, which basically do the exact same thing. The template function takes a single param order::spec which is exactly as the name implies, the order of the queue linking the two kernels. The various functions are needed to specify different ordering types each of these will be commented separately below. This function assumes that Kernel 'a' has only a single output and <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> 'b' has only a single input otherwise an exception will be thrown. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, src kernel </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, dst kernel </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="class_ambiguous_port_assignment_exception.html">AmbiguousPortAssignmentException</a></td><td>- thrown if either src or dst have more than a single port to link. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> - references to src, dst kernels. </dd></dl>
<p>assume each only has a single input / output </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 1 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad982ebf61439a069ed36dc5f756b732a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;order::spec t = order::in&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> MapBase::link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>a_port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::size_t&#160;</td>
          <td class="paramname"><em>buffer</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>link - same as function above save for the following differences: kernel a is assumed to have multiple ports and the one we wish to link with <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b is a_port. <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b is assumed to have a single input port to connect otherwise an exception is thrown. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *a, can have multiple ports </td></tr>
    <tr><td class="paramname">a_port</td><td>- port within <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> a to link </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *b, assumed to have only single input. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="class_ambiguous_port_assignment_exception.html">AmbiguousPortAssignmentException</a></td><td>- thrown if <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b has more than a single input port. </td></tr>
    <tr><td class="paramname"><a class="el" href="class_port_not_found_exception.html">PortNotFoundException</a></td><td>- thrown if <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> a has no port named a_port. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> - references to src, dst kernels. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 2 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a19a0a2f6842a863327920776457c52bf"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;order::spec t = order::in&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> MapBase::link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>b_port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::size_t&#160;</td>
          <td class="paramname"><em>buffer</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>link - same as above save for the following differences: <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> a is assumed to have a single output port. <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b is assumed to have more than one input port, within one matching the port b_port. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, with more a single output port </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, with input port named b_port </td></tr>
    <tr><td class="paramname">b_port</td><td>- const std::string, input port name. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="class_ambiguous_port_assignment_exception.html">AmbiguousPortAssignmentException</a></td><td>- exception thrown if <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> a has more than a single output port </td></tr>
    <tr><td class="paramname"><a class="el" href="class_port_not_found_exception.html">PortNotFoundException</a></td><td>- exception thrown if <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b has no input port named b_port </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> - references to src, dst kernels. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 3 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="af06481b99a96e3c5ae8da88cc8a78e91"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;order::spec t = order::in&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> MapBase::link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>a_port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>b_port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::size_t&#160;</td>
          <td class="paramname"><em>buffer</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>link - same as above save for the following differences: <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> a is assumed to have an output port a_port and <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> b is assumed to have an input port b_port. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, with more a single output port </td></tr>
    <tr><td class="paramname">a_port</td><td>- const std::string, output port name </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>*, with input port named b_port </td></tr>
    <tr><td class="paramname">b_port</td><td>- const std::string, input port name. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="class_port_not_found_exception.html">PortNotFoundException</a></td><td>- exception thrown if either kernel is missing port a_port or b_port. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkernel__pair__t.html">kernel_pair_t</a> - references to src, dst kernels. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 4 -->
</div>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a2220cd630c5d00708f08d9bc70a48220"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">kernelkeeper MapBase::all_kernels</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>and keep a list of all kernels </p>

</div>
</div>
<a class="anchor" id="a83bb7ac6b0e80882356946d19da7ce4a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">kernelkeeper MapBase::dst_kernels</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>dst kernels </p>

</div>
</div>
<a class="anchor" id="a2541cb37a237e66fc88129f9f0b02f50"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">kernelkeeper MapBase::source_kernels</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>need to keep source kernels </p>

</div>
</div>
<a class="anchor" id="abc4856ed552e77510211851f0a4a02ab"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="class_map_base.html">MapBase</a>* &gt; MapBase::sub_maps</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>FIXME: come up with better solution for enabling online duplication of submaps as a unit.</p>
<p>DOES: flatten these kernels into main map once we run </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="mapbase_8hpp_source.html">mapbase.hpp</a></li>
<li>mapbase.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Oct 12 2015 12:16:50 for RaftLib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
